// pages/login/index.js
import {loginRequest} from "../../api/main"
var httpRequest = require ( '../../utils/wxrequest.js' ); 
Page({

  /**
   * 页面的初始数据
   */
  data: {
    useraccount: '',  //学号
    userpwd: '', //密码 
    saveCount: true, //需要记住账号  一键登录
    isBind: 0,
    token: wx.getStorageSync("loginFlag"),
    code: null,
    isHasUserInfo: false,
    isHasMember: false,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.initAccount()
    this.checkUserInfoPermission()

  },

  // 初始化账号
  initAccount() {
    const accountCache = wx.getStorageSync("account")
    if (accountCache) { //有就获取该缓存
      this.setData({
        ...accountCache
      })
    }
  },

  //点击了微信一键登录
  authLogin(){
    const that = this
    wx.login({
      success: ({code}) => {
        console.log("code=" + code)
        if(code){
                 
          //向开发者服务器发送请求
          let api = "/wx/autologin"
          let config = {
            url: api,
            method: "POST",
            data: {
              useraccount: that.data.useraccount,
              userpwd: that.data.userpwd,
              code: code
            }
          }
          let promise = httpRequest.wxRequest(config)
          promise.then(res => {
            console.log(res.data)
            if(res.data.code!=200){
              wx.showToast({
                title: res.data.msg,
                icon: 'none'
              })
              return
            }
            let isHas = null
            // 有没有完整的微信登录者信息
            isHas = res.data == 0 ? false : true
            //出错：  app is not defined  原因： wxRequest的原因
            getApp().globalData.isHasUserInfo = isHas
            that.setData({
              code : code,
              isHasUserInfo: isHas
            })
            wx.setStorageSync('userInfo', res.data)
            //存储token
            wx.setStorageSync('token', res.data.token);
            
            }).catch(res => {
              console.log("fail", res)
            });
      } else {
        console.log('发生错误')
      }
      }
    })
  
  },

  login(){
    //这里 this是指这个js文件最上面Page对象。而不是我们的request对象， 用that存储我们的page对象
    const this_ = this
    var loginStatus = false
    wx.showLoading({
      title: '登录中',
    })


      //普通绑定
      const postData = {
        useraccount: this_.data.useraccount,
        userpwd: this_.data.userpwd,
      }

      loginRequest(postData).then(res => {
        wx.hideLoading()
          //console.log(res)
          if(res.code == 500){
            wx.showToast({
              title: res.msg,
              icon: 'none'
            })
            return false
          }
          this_.setData({
            isHasMember: true
          })
          //存储token
          wx.setStorageSync('token', res.data.token);
          if (this_.data.saveCount) {
            //绑定 + 一键登录
            console.log("去往登录页");
              wx.navigateTo({
                url: "../loginindex/index?useraccount=" +this_.data.useraccount + "&userpwd=" +this_.data.userpwd,
                success: (result) => {},
                fail: () => {},
                complete: () => {},
              });
          } else{
            wx.showToast({
              title: '绑定教务成功',
              icon: 'success'
            })
            //关掉登录页面重定向到首页
            setTimeout(() => {
                wx.switchTab({
                  url:  '/pages/index/index'
                })
            }, 1500);
          }
      } )
    
  },

  switchStatus() {
    this.setData({
      saveCount: !this.data.saveCount
    })
  },

  // session_key的生命周期有不确定性，可以使用 wx.login接口刷新 session_key。
  // 为了避免频繁调用 wx.login 接口，可以通过调用 wx.checkSession(Object object)接口判断session_key是否已经过期。

  //当后台没有获取到个人数据时，才调用
  getUserProfile(e){
    let this_ = this
    console.log("正在运行获取用户头像昵称信息")
    if (!this.data.isHasUserInfo) {
      //如果服务器端没有保存完整的微信登录者信息
      wx.getUserProfile({
        desc: '需要完善您的资料！',
        success: (res) => {
          this_.setData({
            userInfo: res.userInfo,
            isHasUserInfo: true
          })
          //再次登录，因为 session_key 有生命中周期
          wx.login({
            success(res_) {
              let config = {
                url: "/wx/wxLogin",
                method: "GET",
                data: {
                  code: res_.code,
                  //明文数据
                  rawData: res.rawData,
                  //加密数据
                  encryptedData: res.encryptedData,
                  iv: res.iv,
                  //数字签名
                  signature: res.signature
                }
              }
              let promise = httpRequest.wxRequest(config)
              promise.then(res => {
                console.log("wxLogin", res)
                console.log(res.data)
                this_.setData({
                  isHasMember: true
                })
              }).catch(res => {
                console.log("fail", res)
              });
            }
          })
        }
      })
    }
  },

  // 检查用户信息授权设置  防止用户授权不同意后再次调取授权窗口
  checkUserInfoPermission: function (callback = () => {}) {
    wx.getSetting({
      success: function (res) {
        console.log(res);
        if (!res.authSetting["scope.userInfo"]) {
          wx.openSetting({
            success: function (authSetting) {
              console.log("success:authSetting：");
              console.log(authSetting);
              callback();
            },
            fail: function (error) {
              console.log("fail:authSetting：");
              console.log(error);
            },
          });
        }
      },
      fail: function (error) {
        console.log(用户信息授权设置);
        console.log(error);
      },
    });
  },
  





})